package com.liliudong.template.common.entity.sys;

import com.liliudong.template.common.entity.BaseEntity;
import com.mybatisflex.annotation.EnumValue;
import com.mybatisflex.annotation.Table;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.Getter;

/**
 * 系统角色
 *
 * @author ldli5
 * @date 2024/06/18
 */
@EqualsAndHashCode(callSuper = true)
@Data
@Table(value = "sys_role")
public class SysRole extends BaseEntity {

    /**
     * 数据权限类型 1仅本人 2本部门 3本部门及以下 4自定义范围 5全部数据
     */
    private DataScope dataScope;

    /**
     * 启用状态 1启用 0禁用
     */
    private Enable enable;

    /**
     * 角色名称
     */
    private String name;

    /**
     * 权限标识符
     */
    private String permission;

    /**
     * 排序
     */
    private Integer sort;


    /**
     * 数据权限枚举
     *
     * @author ldli5
     * @classname DataScopeEnum
     * @date 2024/6/19-9:46
     */
    @Getter
    public enum DataScope {
        // 	数据权限类型 1仅本人 2本部门 3本部门及以下 4自定义范围 5全部数据
        SELF(1, "仅本人"),
        DEPARTMENT(2, "本部门"),
        DEPARTMENT_AND_SUBORDINATE(3, "本部门及以下"),
        CUSTOMIZE(4, "自定义范围"),
        ALL(5, "全部数据");

        @EnumValue
        private final Integer code;
        private final String desc;

        DataScope(Integer code, String desc) {
            this.code = code;
            this.desc = desc;
        }
    }

    /**
     * 启用禁用
     *
     * @author ldli5
     * @classname SysRoleEnableEnum
     * @date 2024/6/20-16:59
     */
    @Getter
    public enum Enable {

        ENABLE(1, "启用"),
        DISABLE(0, "禁用");

        @EnumValue
        private final Integer value;
        private final String desc;

        Enable(Integer value, String desc) {
            this.value = value;
            this.desc = desc;
        }
    }
}
